﻿Imports System.Data
Imports System.Data.SqlClient
'Hacemos referencia al proyecto BusinessEntities
Imports BE = BusinessEntities

Public Class ResultadoDAO
    Dim conexion As SqlConnection
    Dim comando As SqlDataAdapter
    Public Shared errores As String
    Dim com As SqlCommand

    'Instanciamos la clase Conexion
    Dim cn As New Conexion


    Public Function ListarPreguntasxEncuesta(ByVal objeto As BE.ResultadoBE) As DataSet
        Dim ds As New DataSet
        Try
            conexion = cn.Conectar
            comando = New SqlDataAdapter("sp_listarpreguntasxencuesta", conexion)
            comando.SelectCommand.CommandType = CommandType.StoredProcedure

            comando.SelectCommand.Parameters.Add(New SqlParameter("@encuesta", SqlDbType.Char, 6))
            comando.SelectCommand.Parameters("@encuesta").Direction = ParameterDirection.Input
            comando.SelectCommand.Parameters("@encuesta").Value = objeto.codigoencuesta

            comando.Fill(ds, "PreguntasxEncuesta")
        Catch ex As Exception
            errores = ex.Message
        Finally
            conexion.Dispose()
            comando.Dispose()
            ds.Dispose()
        End Try

        Return ds
    End Function

    Public Function ListarOpcionesxPreguntayEncuesta(ByVal objeto As BE.ResultadoBE) As DataSet
        Dim ds As New DataSet
        Try
            conexion = cn.Conectar
            comando = New SqlDataAdapter("sp_listaropcionesxpregunta", conexion)
            comando.SelectCommand.CommandType = CommandType.StoredProcedure

            comando.SelectCommand.Parameters.Add(New SqlParameter("@encuesta", SqlDbType.Char, 6))
            comando.SelectCommand.Parameters("@encuesta").Direction = ParameterDirection.Input
            comando.SelectCommand.Parameters("@encuesta").Value = objeto.codigoencuesta

            comando.SelectCommand.Parameters.Add(New SqlParameter("@pregunta", SqlDbType.Char, 6))
            comando.SelectCommand.Parameters("@pregunta").Direction = ParameterDirection.Input
            comando.SelectCommand.Parameters("@pregunta").Value = objeto.codigopregunta

            comando.Fill(ds, "OpcionesxPreguntayEncuesta")
        Catch ex As Exception
            errores = ex.Message
        Finally
            conexion.Dispose()
            comando.Dispose()
            ds.Dispose()
        End Try

        Return ds
    End Function



    Public Function Votar(ByVal objeto As BE.ResultadoBE) As Boolean

        Try
            conexion = cn.Conectar
            com = New SqlCommand("SP_VOTAR", conexion)
            com.CommandType = CommandType.StoredProcedure

            com.Parameters.Add(New SqlParameter("@encuesta", SqlDbType.Char, 6))
            com.Parameters("@encuesta").Direction = ParameterDirection.Input
            com.Parameters("@encuesta").Value = objeto.codigoencuesta

            com.Parameters.Add(New SqlParameter("@pregunta", SqlDbType.Char, 6))
            com.Parameters("@pregunta").Direction = ParameterDirection.Input
            com.Parameters("@pregunta").Value = objeto.codigopregunta

            com.Parameters.Add(New SqlParameter("@opcion", SqlDbType.Char, 6))
            com.Parameters("@opcion").Direction = ParameterDirection.Input
            com.Parameters("@opcion").Value = objeto.codigoopcion

            conexion.Open()
            com.ExecuteNonQuery()
            Return True
        Catch ex As Exception
            errores = ex.Message
            Return False
        Finally

            If conexion.State = ConnectionState.Open Then conexion.Close()
            'Liberamos recursos
            conexion.Dispose()
            com.Dispose()
        End Try


    End Function

    Public Function ArmarEncuesta(ByVal objeto As BE.ResultadoBE) As Boolean
        Try
            conexion = cn.Conectar
            com = New SqlCommand("sp_armarencuesta", conexion)
            com.CommandType = CommandType.StoredProcedure

            com.Parameters.Add(New SqlParameter("@encuesta", SqlDbType.Char, 6))
            com.Parameters("@encuesta").Direction = ParameterDirection.Input
            com.Parameters("@encuesta").Value = objeto.codigoencuesta

            com.Parameters.Add(New SqlParameter("@pregunta", SqlDbType.Char, 6))
            com.Parameters("@pregunta").Direction = ParameterDirection.Input
            com.Parameters("@pregunta").Value = objeto.codigopregunta

            com.Parameters.Add(New SqlParameter("@opcion", SqlDbType.Char, 6))
            com.Parameters("@opcion").Direction = ParameterDirection.Input
            com.Parameters("@opcion").Value = objeto.codigoopcion

            conexion.Open()
            com.ExecuteNonQuery()
            Return True
        Catch ex As Exception
            errores = ex.Message
            Return False
        Finally

            If conexion.State = ConnectionState.Open Then conexion.Close()
            'Liberamos recursos
            conexion.Dispose()
            com.Dispose()
        End Try
       
    End Function

    Public Function Resultados(ByVal objeto As BE.ResultadoBE) As DataSet
        Dim ds As New DataSet
        Try
            conexion = cn.Conectar
            comando = New SqlDataAdapter("sp_muestraresultados", conexion)
            comando.SelectCommand.CommandType = CommandType.StoredProcedure

            comando.SelectCommand.Parameters.Add(New SqlParameter("@encuesta", SqlDbType.Char, 6))
            comando.SelectCommand.Parameters("@encuesta").Direction = ParameterDirection.Input
            comando.SelectCommand.Parameters("@encuesta").Value = objeto.codigoencuesta

            comando.SelectCommand.Parameters.Add(New SqlParameter("@pregunta", SqlDbType.Char, 6))
            comando.SelectCommand.Parameters("@pregunta").Direction = ParameterDirection.Input
            comando.SelectCommand.Parameters("@pregunta").Value = objeto.codigopregunta

            comando.Fill(ds, "Resultados")
        Catch ex As Exception
            errores = ex.Message
        Finally
            conexion.Dispose()
            comando.Dispose()
            ds.Dispose()
        End Try

        Return ds

    End Function


    Public Function ChapaError() As String
        Return errores
    End Function

End Class
